package core;

/**
 * Classe strucutre pour modéliser les coordonnées d'une case sur un plateau d'échec.
 * @author baptiste.andrini
 *
 */
public class Coordonnees {
	public int x;
	public int y;
	
	/**
	 * Constructeur
	 * @param x
	 * @param y
	 */
	public Coordonnees(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public Coordonnees getVoisin(Cardinalite card) {
		return 	(card == null)					?	(null)							:
				(card == Cardinalite.Nord)		?	(new Coordonnees(x	, y+1	))	:
				(card == Cardinalite.NordEst)	?	(new Coordonnees(x+1, y+1	))	:
				(card == Cardinalite.Est)		?	(new Coordonnees(x+1, y		))	:
				(card == Cardinalite.SudEst)	?	(new Coordonnees(x+1, y-1	))	:
				(card == Cardinalite.Sud)		?	(new Coordonnees(x	, y-1	))	:
				(card == Cardinalite.SudOuest)	?	(new Coordonnees(x-1, y-1	))	:
				(card == Cardinalite.Ouest)		?	(new Coordonnees(x-1, y		))	:
													(new Coordonnees(x-1, y+1	))	;
	}
	
	public String toString() {
		return "["+x+";"+y+"]";
	}

	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + x;
		result = prime * result + y;
		return result;
	}

	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Coordonnees other = (Coordonnees) obj;
		if (x != other.x)
			return false;
		if (y != other.y)
			return false;
		return true;
	}
}